import Schema from 'validate'
const roomInfo = new Schema({
  // 姓名
  name: {
    type: String, // 类型
    match: /^[\u4e00-\u9fa5]{2,6}$/, // 中文正则
    message: '姓名中文 2-6位', // 提示信息
  },
  // 手机号码
  mobile: {
    type: String, // 类型
    match: /^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/, // 手机号码
    message: '手机不合法', // 提示信息
  },
  // 楼栋
  building: {
    type: String, // 类型
    required: true, // 非空
    message: '楼栋不能为空', // 提示信息
  },
  // 房号
  room: {
    type: String, // 类型
    required: true, // 非空
    message: '房号不能为空', // 提示信息
  },
  // 身份证正面
  idcardFrontUrl: {
    type: String, // 类型
    required: true, // 非空
    message: '身份证正面不能为空', // 提示信息
  },
  // 身份证背面
  idcardBackUrl: {
    type: String, // 类型
    required: true, // 非空
    message: '身份证背面不能为空', // 提示信息
  },
},
  { strip: false }
)
Page({
  data: {
    // 接口文档中查看
    /** * 小区楼栋信息 */
    building: '',
    /** * 业主性别0女1男 */
    gender: 1,
    /** * 身份证背面 */
    idcardBackUrl: '',
    /** * 身份证正面 */
    idcardFrontUrl: '',
    /** * 业主电话 */
    mobile: '',
    /** * 业主姓名 */
    name: '',
    /** * 小区信息 */
    point: '',
    /** * 小区房间信息 */
    room: '',
  },
  async onLoad({ house, building, room, id }) {
    // 如果有id，就是编辑
    if (!!id) {
      // 修改顶部标题
      wx.setNavigationBarTitle({ title: '编辑房屋信息' })
      // 数据回显
      const res = await wx.http({
        url: `/room/${id}`
      })
      // 结构赋值剔除不需要的属性
      const { status, ...data } = res.data
      // 赋值到data
      this.setData(data)
    } else {
      // 没有id则是新增
      wx.setNavigationBarTitle({ title: '添加房屋信息' })
      this.setData({
        point: house,
        building,
        room
      })
    }

  },
  // 上传身份证
  async onChooseMedia(ev) {
    // 选择图片
    const res = await wx.chooseMedia({
      count: 1,//只能选择一张图片
      mediaType: ['image'],//只能选择图片
      sourceType: ['album', 'camera']//拍照或相册
    })
    const { tempFilePath } = res.tempFiles[0]//取出图片临时地址
    // 上传图片
    wx.uploadFile({
      filePath: tempFilePath,//文件临时地址
      name: 'file',// 获取文件的key 给后端去获取
      url: wx.http.baseURL + '/upload',
      header: {
        Authorization: `Bearer ${getApp().token}`// 请求头 token
      },
      success: (res2) => {
        // console.log(res2);
        const data = JSON.parse(res2.data)
        // console.log(data);
        const { type } = ev.mark
        this.setData({
          [type]: data.data.url//保存图片在线地址
        })
      },
      fail: (err) => {
        console.log(err);
      }
    })
  },
  // 删除身份证
  removePicture(ev) {
    // 确认框
    wx.showModal({
      title: '提示',
      content: '是否删除图片',
      success: (res) => {
        if (res.confirm) {
          // 获取自定义属性值
          const { type } = ev.mark
          this.setData({
            [type]: ''
          })
        } else if (res.cancel) {
          console.log('用户点击取消')
        }
      }
    })

  },
  //提交审核
  async goList() {
    // 获取打他中的属性
    const data = this.data
    // 并移除不必要属性
    delete data.__webviewId__
    // 校验信息
    const errs = roomInfo.validate(data)
    // errs.length不为0则是不通过
    if (errs.length !== 0) {
      return wx.utils.toast(errs[0].message)
    }
    // 发送添加房屋请求
    const res = await wx.http({
      url: '/room',
      method: 'post',
      data
    })
    // 房屋信息已达到上限
    if (res.code !== 10000) {
      return wx.utils.toast(res.message)
    }
    // 弹出提示
    wx.showToast({
      title: '提交成功',
    })
    setTimeout(() => {
      // 跳转房屋列表页面
      wx.navigateTo({
        url: '/house_pkg/pages/list/index',
      })
    }, 1000);

  }
})